<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>语句</title>
		<link rel="stylesheet" type="text/css" href="css/reset.css"/>
		<link rel="stylesheet" type="text/css" href="css/common.css"/>
	</head>
	<body>
		<div class="web">
			<h1>语句介绍</h1>
			<hr />
			<h2>语句</h2>
			<p>如果说表达式在JavaScript中是短语,那么语句(statement)就是JavaScript整句和命令,语句结束是以分号结束.</p>
			<details>
				<summary>声明语句</summary>
				<ul>
					<li>var/function都是声明语句</li>
					<li>var x,y;</li>
					<li>var x = Math.pow(2,3)</li>
					<li>var 语句在函数体内就是局部变量,如果出现在顶层代码就是全局变量</li>
					<li>var声明的变量如果没有初始化表达式,那么该变量默认为undefined</li>
					<li>变量声明会被"提前"到至脚本或者函数顶部,但值的初始化还是在原位置进行</li>
					<li>多次声明一个变量是无所谓的</li>
					<li>下面语句分别打印输出什么?
				<pre>
					var tem = "全局变量";
					function(){
						console.log(tem);
						var tem = "局部变量";
						console.log(tem);
					}
				</pre>
					</li>
					<li>let声明语句</li>
					<li>function用来定义函数</li>
					<li>function name(arr1,arr2,..){
						//具体逻辑部分语句
					}</li>
				</ul>
			</details>
			<details>
				<summary>条件语句</summary>
				<ul>
					<li>if是一种基本的控制语句</li>
					<li>if(true/false){
						//为真时的执行语句	
						}else{
							//为假时的执行语句
						}	
					</li>
					<li>switch语句,可以使用case关键字标识的多个代码片段,case之后是一个表达式和冒号,如果找不到匹配的case就执行default标签后面的语句</li>
					<li>
			<pre>
				switch(n){
					case 1:
					//执行代码块1
					break;
					case 2:
					//执行代码块2
					break;
					default:
					//执行代码块
				}
			</pre>
					</li>
					<li>首先计算switch关键字后面的表达式,然后按照从上到下的顺序执行case后面的表达式,直到两者表达式的值完全相等时为止.如果switch表达式与case表达式都不匹配,则执行default操作,在没有default的情况下则直接跳出循环;由于是"==="操作,因此表达式和case的匹配不会做任何类型转换.</li>
				</ul>
			</details>
			<details>
				<summary>循环语句</summary>
				<h4>while循环</h4>
				<ul>
					<li>while(ex){}</li>
					<li>在执行while语句之前,JavaScript解释器会先计算ex的值,如果它是假值,那么程序将跳过循环体中的逻辑代码,反之则执行,然后再次计算表达式ex的值,并判断真假,这种循环会一直执行下去,直到ex值为假.</li>
					<li>
						do{//循环语句}while(ex)
					</li>
					<li>与while循环不同的是,do后面的循环语句肯定会执行一次</li>
				</ul>
				<h4>for循环</h4>
				<ul>
					<li>for(初始化;检测表达式;计数器更新){
				循环语句		
					}</li>
					<li>在循环中,如果遇到break,就会终止循环,而continue只会跳过本次循环,跳转到下次循环</li>
					<li>continue在for与while循环语句跳转区别 ?for会先计算其计数器,然后判断循环条件,while直接进入下一轮循环条件判断</li>
					<li></li>
				</ul>
			</details>
			<details>
				<summary>return语句</summary>
				<ul>
					<li>return expression</li>
					<li>return语句只能在函数体内出现,返回调用函数的返回值</li>
					<li>return并不是函数必须的,但调用表达式的结果是undefined</li>
					<li>return不一定要放在函数体后面,但return后面的语句不会执行</li>
				</ul>
			</details>
		</div>
		<script type="text/javascript">
			var arr = "utopia";
			for(k in arr){
				if(k%2==0){
					continue;
				}
				document.write(arr[k]+"</br>")
			}
			function test(){
				alert("aa");
				return;
				alert("bb");
			}
//			test();
		</script>
	</body>
</html>
